#ifndef _JPHYSICSMANAGER_H_
#define _JPHYSICSMANAGER_H_

#include "JPhysicsCollisionHandler.h"

class JPhysicsObject;
struct JPVector3;

/** \brief JPhysics manager is the singleton class for managing
all JPysics functions.*/
/*
class JPhysicsManager 
{
public:
	JPhysicsManager();
	~JPhysicsManager(){}

	/* \brief Initialises the physics manager.
	 *	param float gravity sets gravity

	void initPhysics(float gravity);

	/*	\brief Releases the physics manager 
	 *	 and any memory itsallocated.

	void releasePhysics();

	/** \brief Called every frame to update the physics simulation
	\return int 
	void update(float timeDiff);

	/** \brief Creates a PhysicsObject object and returns a pointer
	to that object.
	\return JPhysicsCuboid* 
	JPhysicsObject* createPhysicsSphere(CollisionType collisionType, float mass, float radius);
	JPhysicsObject* createPhysicsPlane(CollisionType collisionType, JPVector3 *pointOnPlane, JPVector3 *normal);
	JPhysicsObject* createPhysicsCube(CollisionType collisionType, JPVector3 *centre, float mass, JPVector3 *orientation, float *halfLength);

	/** \brief returns the current gravity value
	\return float 
	float getGravity(){return m_gravity;}

private:

	void collisionCheck(const JPhysicsObject &objectOne, const JPhysicsObject &objectTwo);

	float  m_gravity;

	int    m_objectCount;
	int    m_collisionCount;

	struct ObjectLinkedList
	{
		JPhysicsObject *m_physicsObject;

		ObjectLinkedList *m_objectLLNext;
	};

	ObjectLinkedList *m_objectLLStart;
	ObjectLinkedList *m_objectLLCurrent;

	JPCollisionHandler m_collisionHandler;
};
*/
#endif